package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1000;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Scrm1400
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrm1400 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Scrm1400.jsp";
	private String jVersaoj;
	private String dataCorrente;
	private String jfuncaoj;
	private String horaCorrente;
	private int jTipo;
	private String jNomeCadastrado;
	private int jMatriculaCadastrado;
	private String jSenhaCadastrado;
	private int jOpcao;
	private String jSeuNivelTxt;
	private String jSeuNivel;
	private int jMatriculaCadastrou;
	private String jNomeCadastrou;
	private int jDia;
	private String jNomeDoMes;
	private String jAno;
	private String jHoras;
	private String jEmpresaj;
	private String jProgramaj;
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "jnomecadastrado";
	private String navegar = "";
	public Boolean temMensagem = false;
	private Result result;
	private String jconf;
	private Sessao sessao; // Classes views
	private String faseproc = "";

	// Classes includes
	public Scrm1400() {
		inicializar(false);
	}

	public Scrm1400(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jVersaoj = "";
			dataCorrente = "";
			jfuncaoj = "";
			jTipo = 0;
			jNomeCadastrado = "";
			jMatriculaCadastrado = 0;
			jSenhaCadastrado = "";
			jOpcao = 0;
			jSeuNivelTxt = "";
			jSeuNivel = "";
			jMatriculaCadastrou = 0;
			jNomeCadastrou = "";
			jDia = 0;
			jNomeDoMes = "";
			jAno = "";
			jHoras = "";
			jEmpresaj = "";
			jProgramaj = "";
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jfuncaoj = sessao.getScrg001().getWFuncaow();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		dataCorrente = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATE
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		ValidarWnomeCadastrado();
		if (temMensagem) {
			return false;
		}
		ValidarWmatriculaCadastrado();
		if (temMensagem) {
			return false;
		}

		ValidarWopcao();
		if (temMensagem) {
			return false;
		}
		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWFuncaow(this.jfuncaoj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
			enviarMensagem(null, "Tecla invalida");
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1000 scrp1000 = new Scrp1000(result, sessao);
			scrp1000.executar(null);
		}
	}

	private void ValidarWnomeCadastrado() {
		// Consist�ncia F00#NOME-CADASTRADO
		String wNome0;
		if (jTipo == 1 || !jNomeCadastrado.trim().equals("")) {
			wNome0 = jNomeCadastrado;
			if (jNomeCadastrado.trim().equals("")) {
				enviarMensagem(null, "Campo de preenchimento obrigatorio");
				return;
			}
			if (UtilBean.subStr(wNome0, 0 + 1 - 1, 1).trim().equals("")) {
				enviarMensagem(null, "A primeira posicao do nome esta� em branco");
				return;
			}
			if (UtilBean.subStr(wNome0, 0 + 1 - 1, 1).indexOf("0123456789", 0) >= 0) {
				enviarMensagem(null, "A primeira posicao do nome nao pode ser um numero");
				return;
			}
		}
	}

	private void ValidarWmatriculaCadastrado() {
		// Consist�ncia F00#MATRICULA-CADASTRADO
		if (jTipo == 1) {
			if (jMatriculaCadastrado == 0) {
				enviarMensagem(null, "Campo de preenchimento obrigatorio");
				return;
			}
		}
	}

	private void ValidarWopcao() {
		// Consist�ncia F00#OPCAO
		if (!((jOpcao == 0 || jOpcao == 1 || jOpcao == 4 || jOpcao == 9))) {
			enviarMensagem(null, "Nivel de acesso invalido");
			return;
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getJfuncaoj() {
		return jfuncaoj;
	}

	public void setJfuncaoj(String jfuncaoj) {
		this.jfuncaoj = jfuncaoj;
	}

	public int getJtipo() {
		return jTipo;
	}

	public void setJtipo(int jTipo) {
		this.jTipo = jTipo;
	}

	public String getJnomecadastrado() {
		return jNomeCadastrado;
	}

	public void setJnomecadastrado(String jNomeCadastrado) {
		this.jNomeCadastrado = jNomeCadastrado;
	}

	public int getJmatriculacadastrado() {
		return jMatriculaCadastrado;
	}

	public void setJmatriculacadastrado(int jMatriculaCadastrado) {
		this.jMatriculaCadastrado = jMatriculaCadastrado;
	}

	public String getJsenhacadastrado() {
		return jSenhaCadastrado;
	}

	public void setJsenhacadastrado(String jSenhaCadastrado) {
		this.jSenhaCadastrado = jSenhaCadastrado;
	}

	public int getJopcao() {
		return jOpcao;
	}

	public void setJopcao(int jOpcao) {
		this.jOpcao = jOpcao;
	}

	public String getJseuniveltxt() {
		return jSeuNivelTxt;
	}

	public void setJseuniveltxt(String jSeuNivelTxt) {
		this.jSeuNivelTxt = jSeuNivelTxt;
	}

	public String getJseunivel() {
		return jSeuNivel;
	}

	public void setJseunivel(String jSeuNivel) {
		this.jSeuNivel = jSeuNivel;
	}

	public int getJmatriculacadastrou() {
		return jMatriculaCadastrou;
	}

	public void setJmatriculacadastrou(int jMatriculaCadastrou) {
		this.jMatriculaCadastrou = jMatriculaCadastrou;
	}

	public String getJnomecadastrou() {
		return jNomeCadastrou;
	}

	public void setJnomecadastrou(String jNomeCadastrou) {
		this.jNomeCadastrou = jNomeCadastrou;
	}

	public int getJdia() {
		return jDia;
	}

	public void setJdia(int jDia) {
		this.jDia = jDia;
	}

	public String getJnomedomes() {
		return jNomeDoMes;
	}

	public void setJnomedomes(String jNomeDoMes) {
		this.jNomeDoMes = jNomeDoMes;
	}

	public String getJano() {
		return jAno;
	}

	public void setJano(String jAno) {
		this.jAno = jAno;
	}

	public String getJhoras() {
		return jHoras;
	}

	public void setJhoras(String jHoras) {
		this.jHoras = jHoras;
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}

	public String getJconf() {
		return jconf;
	}

	public void setJconf(String jconf) {
		this.jconf = jconf;
	}

	public void setFaseproc(String faseproc) {
		this.faseproc = faseproc;

	}

	public String getFaseproc() {
		return faseproc;
	}

	public String getPagina() {
		return pagina;
	}

	public void setPagina(String pagina) {
		this.pagina = pagina;
	}

}
